// pages/shop/shop.js
import {
  showModal,showToast
} from "../../utils/asyncWx.js"
Page({

  /**
   * 页面的初始数据
   */
  data: {
    address: {},
    cart: [],
    allChecked: false,
    totalPrice: 0,
    totalNum: 0,
    cartNum:0,
  },
  handleChooseAddress() {
    wx.chooseAddress({
      success: (result) => {
        console.log(result);
        let address = result
        address.all = address.provinceName + address.cityName + address.countyName + address.detailInfo
        wx.setStorageSync("address", address)
        this.setData({
          address
        })
      }
    })

  },
  // 设置购物车状态同时重新计算底部工具栏的数据 全选 总价格 购买的数量
  setCart(cart) {
    let allChecked = true
    let totalPrice = 0;
    let totalNum = 0;
    cart.forEach(v => {
      if (v.checked) {
        totalPrice += v.num * v.goods_price
        totalNum += v.num;
      } else {
        allChecked = false
      }
    })
    allChecked = cart.length != 0 ? allChecked : false
    this.setData({
      cart,
      totalPrice,
      totalNum,
      allChecked
    })
    wx.setStorageSync("cart", cart)

  },
  handleItemChange(e) {
    const goods_id = e.currentTarget.dataset.id
    console.log(goods_id);
    // 获取购物车数组
    let {
      cart
    } = this.data
    let index = cart.findIndex(v => v.goods_id === goods_id)
    // 选中状态取反
    cart[index].checked = !cart[index].checked;
    this.setCart(cart)

  },
  // 商品全选功能
  handleItemAllChange() {
    let {
      cart,
      allChecked
    } = this.data
    allChecked = !allChecked
    cart.forEach(v => v.checked = allChecked)
    // 把修改后的值填充回data或者缓存中
    this.setCart(cart)
    // 商品数量的编辑功能

  },
  async handleItemNumEdit(e) {
    // 获取传递过来的参数
    const {
      operation,
      id
    } = e.currentTarget.dataset
    // 获取购物车数组
    let {
      cart
    } = this.data;
    // 找到需要修改的商品索引
    const index = cart.findIndex(v => v.goods_id === id)
    if (cart[index].num === 1 && operation === -1) {
      // 弹窗提示
      // wx.showModal({
      //   title: '提示',
      //   content: '您是否要删除',
      //   success: (res) => {
      //     if (res.confirm) {
      //       cart.splice(index, 1);
      //       this.setCart(cart)
      //     } else if (res.cancel) {
      //       console.log('用户点击取消')
      //     }
      //   } 
      // })
      const res = await showModal({
        content: "您是否要删除？"
      })
      if (res.confirm) {
        cart.splice(index, 1);
        this.setCart(cart)
      }
      // } else if (res.cancel) {
      //   console.log('用户点击取消')
      // }
    } else {
      // 进行修改数量
      cart[index].num += operation;
      this.setCart(cart)
    }

  },
  async handlePay() {
    // 判断收货地址
    const {address,totalNum} = this.data;
    if(!address.userName){
      await showToast({title:"您没有选择收货地址"})
      return
    }
    console.log(totalNum);
    if(totalNum===0){
      await showToast({title:"您还没有选择商品"})
      return
    }
    wx.navigateTo({
      url:'/pages/pay/index'
    })
  },
  onShow() {
    const address = wx.getStorageSync("address")
    const cart = wx.getStorageSync("cart") || []
    this.setData({
      address
    })
    this.setCart(cart)
    // // const allChecked = cart.length ? cart.every(v => v.checked) : false
    // let allChecked = true
    // let totalPrice = 0;
    // let totalNum = 0;
    // cart.forEach(v => {
    //   if (v.checked) {
    //     totalPrice += v.num * v.goods_price
    //     totalNum += v.num;
    //   } else {
    //     allChecked = false
    //   }
    // })
    // allChecked = cart.length != 0 ? allChecked : false
    // this.setData({
    //   address,
    //   cart,
    //   allChecked,
    //   totalPrice,
    //   totalNum
    // })

  },
  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {

  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady: function () {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  // onShow: function () {

  // },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide: function () {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload: function () {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh: function () {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom: function () {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage: function () {

  }
})